#ifndef XGE_GRAPHICS_ANIM_H_
#define XGE_GRAPHICS_ANIM_H_
#include "xge_common_config.h"
#include "node_basenode.h"
#include "xsmart_ptr.h"

namespace xge{
namespace graphics{


  // Animator will perform animation of a specific rendering node
  // like , make this node rotation , make this node twisted , make
  // this node doing the texture animation , etc .
  // You just push the different animator into a animation receiver
  // and than it will allows the specific rendering node perform the
  // animation !
  class Animator {
  public:
    // do the action inside of this
    virtual void Action( BaseNode* node , const Timer::tick_t& diff_time ) = 0;
    Animator() {}
  };

  typedef xge::xge_internal 
    ::SharedPtr
    < Animator , xge::xge_internal::DefaultDestructor<Animator> , xge::xge_internal::CommonOperationPolicy > AnimatorPtr;

}// namespace graphics
}// namespace xge



#endif// XGE_GRAPHICS_ANIM_H_